

#include <stdio.h>
#include <unistd.h>


#include "traffic_light.h"          // 交通灯板三色灯接口
#include "mqtt_task.h"              // MQTT接口
#include "mqtt_light_constant.h"    //常量接口

int publishTrafficlight(int lightType,int state,int second){
    
    
    // 主题
    char *ptopic = "test/publish";  
    // 发布内容格式
    char strFormat[] = "{\"lighttype\":%d,\"state\":%d,\"second\":%d}" ;

    // 消息内容
    char payload[512];                                               
    sprintf(payload,strFormat,lightType,state,second);
    
    printf("test-anran0 %s %s ",ptopic, payload);
    // 发送数据 并返回发送状态
    int rc = MqttTaskPublish(ptopic, payload);                                  // 发布消息
    // int rc = MqttTaskPublish(ptopic, "hello java");                                  // 发布消息
    
    // 下面注释的这段代码在验证mqtt日志功能正常后可以删除
    if (rc != 0)                                                            // 检查是否成功发布消息
    {
        printf("MQTT Publish failed!\r\n");                                 // 输出发布失败信息
        return 0;
    }
    printf("MQTT Publish OK\r\n");       
                                       // 输出发布成功信息
    return rc ; 
}

int delayPublishTrafficlight(int lightType,int state,int second ){

    printf("anran0 lightType = %d  state = %d  second = %d  \n",lightType,state,second);
    // 灯光闪烁的逻辑
    if(state == LIGHT_FLICKER){
        for(int i = 0 ;i < second ;i++){
            // 发送灯光状态给MQTT服务器
            publishTrafficlight(lightType,state,second - i) ;
            // 休眠1秒
            SetTrafficLight(lightType,LIGHT_OPEN___);
            Sleep(500);
            SetTrafficLight(lightType,LIGHT_CLOSE__);
            Sleep(500);
        }
        return 0 ;
    }

    // 只有灯光开关的逻辑
    SetTrafficLight(lightType,state==LIGHT_CLOSE__?LIGHT_CLOSE__:LIGHT_OPEN___);

    printf("SetTrafficLight success");
    for(int i = 0 ;i < second ;i++){
        // 发送灯光状态给MQTT服务器
        publishTrafficlight(lightType,state,second-i) ;
        // 休眠1秒
        Sleep(1000);
    }
    SetTrafficLight(lightType,LIGHT_CLOSE__);
    return 0 ; 
}